/*
 * data_type.h
 *
 *  Created on: 2019年5月7日
 *      Author: Administrator
 */

/**
 *  C头文件
 *  包括C函数声明和宏定义，被多个源文件引用共享，有两种类型的源文件：自己编写的头文件、编译器自带的头文件
 *
 *  如果一个头文件被引用两次，编译器会处理两次头文件的内容，这将产生错误。
 *  为了防止这种情况，标准的做法是把文件的整个内容放在条件编译语句中，如下：
 *
 */
#ifndef INCLUDE_DATA_TYPE_H_
#define INCLUDE_DATA_TYPE_H_
#define STRING_SHORT 10
#define STRING_MID 50
#define STRING_LONG 100

struct Date {
	int year;
	int month;
	int day;
};

/**
 * typedef 关键字
 * 使用它来为类型取一个新的名字
 *
 * typedef vs #define
 * typedef由编译器执行解释，#define由预编译器进行处理
 * typedef仅限于为类型定义符号名称，#define还可以为数值定义别名
 *
 */
typedef struct {

	int id;
	char name[STRING_SHORT];
	int age;
	float height;
	char address[STRING_LONG];
} Person;

extern void basic_type(void);

extern void struct_type(void);

extern void print_date(void * ptr);

extern void print_person(Person person);

extern void int2char();

extern void char2int();
#endif /* INCLUDE_DATA_TYPE_H_ */
